Many advances have been made recently in computer animation systems which are now capable of modelling complex objects. For example, cinematographic effects such as the tyrannosaurus rex dinosaur in the film Jurassic Park have been produced using sophisticated computer animation systems, such as V3.0 of the SOFTIMAGE.vertline.3D product sold by the assignee of the present invention. While such systems have demonstrated the ability to produce a high degree of realism in their animations, this level of realism requires the efforts of skilled animation artists who painstakingly craft the models which the computer animation system processes to obtain the final rendered images.
In fact, the crafting of these models involves several steps and generally requires a large time commitment for even the most skilled animation artist and thus the expense associated with producing high quality and/or photo-realistic animations can be significant. Accordingly, animation systems such as the above-mentioned SOFTIMAGE.vertline.3D system attempt to provide the animation artist with a versatile and comprehensive animation system which can produce a wide range of desired animation results and yet which is relatively easy and time efficient to use.
Two of the principle steps in creating a model for use in an animation is the creation of the skeleton and the assignment of one or more envelopes to that skeleton. In the SOFTIMAGE.vertline.3D product, a model which will be animated comprises a skeleton which defines the geometry and articulation of the model for inverse and forward kinematics purposes, amongst others.
For example, when modelling a human arm a skeleton can be defined which includes a skeleton root (used to define the positioning of the skeleton relative to other skeletons), a joint representing the shoulder and which is coincident with the skeleton root, a joint representing the elbow which is spaced from the shoulder joint by a link of predefined length, and an effector (i.e.--where the wrist/hand would attach) spaced from the elbow joint by another link of predefined length. Another of the chain components a skeleton can include are null models, which are essentially geometric place holders without size or shape and which are used for a variety of purposes, as will be discussed in more detail below.
Each joint in a skeleton can have a variety of parameters associated with it to define the range and type of movement permitted at the joint and these parameters are used for kinematic movement of the skeleton. For example, the shoulder joint moves in a ball and socket manner while the elbow joint moves in a hinge-like manner and these parameters are defined by the animation artist for each joint in the skeleton.
As mentioned above, in the prior art skeletons are used to define the geometry and articulation of the model and are not directly visible in the final rendering of the animation. Thus, once a skeleton has been created for a model, an envelope is applied to the skeleton, the envelope representing the visible features of the model which are considered when rendering the animation. Envelopes can represent skin, fur, clothing or any other feature which should be considered in rendering an animation and which is associated with a skeleton.
As part of the process of defining an envelope for a skeleton, the envelope must be related to the skeleton such that the envelope will move with the skeleton and, if desired, deform appropriately as the skeleton is moved in an animation. For example, in the above-mentioned example of a human arm, a generally cylindrical envelope can be defined to represent the skin of the arm and this envelope can be associated with the skeleton such that the envelope moves with the skeleton. More specifically, the envelope surface is defined by a plurality of vertices and these vertices are assigned to different elements in the skeleton so that, for example, the portion of the envelope representing the forearm will move with the link between the elbow and the effector as this link moves via the elbow joint.
While the simple models described above are quite versatile, it is often required for a realistic rendering of an animation that portions of the envelope be distorted or otherwise modified as the skeleton is moved. For example, it can be desired to model the bulge of a biceps on the upper arm as the forearm of a human animation model moves. In such a case, the skeleton can include another skeleton element adjacent the joint representing the elbow and appropriate vertices of the envelope in the portion of the envelope representing the upper arm are assigned to the additional skeleton element such that, when the elbow joint is rotated the additional skeleton element is also moved toward or away from the elbow joint. Thus, the vertices assigned to the additional element are moved outwardly or inwardly, distorting the envelope to mimic the bulging of a biceps.
In V3.0 of SOFTIMAGE.vertline.3D, the vertices of an envelope can be assigned to: no skeleton elements; one skeleton element; or on a weighted basis to more than one skeleton element. Thus, an envelope can include portions which do not move or deform as the skeleton moves (not assigned to an element), portions which move or deform as a joint in the skeleton moves (assigned to one element) and portions which move or deform as two or more joints in the skeleton move (assigned to more than one element).
An example of a situation wherein it is desired to have an envelope deform in response to movement of several elements is in modelling a human face. In such a model, the upper lip of the face can deform in response to movement of the jaw and/or in response to movement of the cheeks, etc.
In general, the assignment of the vertices of envelopes to skeleton elements can require a significant amount of effort on the part of the animation artist. Depending upon the model and the degree of realism required, the envelopes employed in a model can include hundreds of vertices which the artist must individually assign to skeleton elements. In V3.0 and earlier of SOFTIMAGE.vertline.3D, automatic methods have previously been provided for the initial assignment of envelope vertices to skeleton elements to reduce the effort required by the animation artist.
Specifically, one assignment method, referred to as "full weight assignment", comprises assigning each vertex in an envelope to the skeleton element to which it is physically located closest to. Another assignment method, referred to herein as "weighted assignment", allows the animation artist to pre-specify a value `n` and each vertex of an envelope is assigned to the `n` skeleton elements which are closest to the vertex. In the weighted assignment method, the assignments are weighted inversely proportional to the distance of the vertex from the respective skeleton elements, i.e. an assignment can be weighted 80/20% between a close skeleton element and a distal skeleton element, etc. and a full weight assignment is a 100% assignment.
While these methods have reduced the amount of effort required on the part of the animation artist, they still suffer from some problems. For example, when assigning the vertices for a portion of an envelope representing the torso in an animation model of a human, it is possible that one or more of the vertices in the torso envelope are closer to the skeleton elements in the arm of the model than they are to the skeleton elements in the torso (such as the skeleton elements representing the spine). Thus, under full weight assignment, these envelope vertices in the torso would be assigned in whole to the skeleton elements in the arm and would be deformed and/or move with the arm, rather than with the torso. Even under a weighted assignment, these envelope vertices would be assigned to some degree to the arm and the torso envelope would undesirably deform or move to some extent with the arm.
Such incorrect assignments do not result in a realistic or acceptable animation and this has required the animation artist to manually reassign such vertices to appropriate skeleton elements to obtain a correct model. The amount of effort required to perform such manual reassignments can be significant and, in extreme cases, it can be more time effective for an animation artist to forgo any automated assignment of envelope vertices and to manually perform the assignment.
It is therefore desired to have a system and/or a method for assigning the vertices of an envelope to a skeleton which is flexible, versatile and which can reduce the incorrect or undesired assignment of vertices to skeleton elements.